package com.lw.common.codegen;

import com.alibaba.druid.pool.DruidDataSource;
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.GlobalConfig;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * mybatis-flex-codegen 代码自动生成工具
 */
public class FlexCodegen {
    public static void main(String[] args) {
        //配置数据源
        DruidDataSource dataSource= new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://192.168.0.214:3306/js?characterEncoding=utf-8");
        dataSource.setUsername("root");
        dataSource.setPassword("baibu3D");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");


        //创建配置内容，两种风格都可以。
        // 默认配置
        GlobalConfig globalConfig = createGlobalConfigUseStyle1();

        // 配置自定义模板
        //通过 datasource 和 globalConfig 创建代码生成器
        Generator generator = new Generator(dataSource, globalConfig);

        //生成代码
        generator.generate();
    }
    public static GlobalConfig createGlobalConfigUseStyle1() {
        //创建配置内容
        GlobalConfig globalConfig = new GlobalConfig();

        //设置根包
        globalConfig.setBasePackage("com.lw");

        //设置表前缀和只生成哪些表
        // 填写需要生成数据库和表
        globalConfig.setGenerateTable("tb_interface");

        //设置生成 entity
        globalConfig.setEntityGenerateEnable(true);
        globalConfig.setEntityOverwriteEnable(true);//是否覆盖
        // 表定义辅助类 ,涉及到多表查询的时候回用到的
        globalConfig.setTableDefGenerateEnable(false);
        globalConfig.setTableDefOverwriteEnable(false);//是否覆盖
        globalConfig.setEntityWithSwagger(false);//带swagger
        globalConfig.setEntityWithLombok(false);// 启用 Lombok

        //mapper
        globalConfig.setMapperGenerateEnable(false); //设置生成 mapper
        globalConfig.setMapperXmlGenerateEnable(false);// 文件

        //service 控制类
        globalConfig.setServiceGenerateEnable(false);  // 服务类
        globalConfig.setServiceImplGenerateEnable(false);  // 服务实现类

        // 控制类
        globalConfig.setControllerGenerateEnable(false);
        globalConfig.setControllerRestStyle(false);


        // 注释配置
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String format = dateFormat.format(date);
        globalConfig.getJavadocConfig()
                .setAuthor("lw")
                .setSince(format);
        return globalConfig;
    }
}
